package com.gimi.cloud.bbp.manage.consumer.feign;

import com.gimi.cloud.bbp.common.utils.reqhead.Response;
import com.gimi.cloud.bbp.dto.mall.MallAppBannerGroupDTO;
import com.gimi.cloud.bbp.dto.mall.MallAppColumnDTO;
import com.gimi.cloud.bbp.dto.mall.MallAppRecommentGroupDTO;
import com.gimi.cloud.bbp.dto.mall.MallAppSpecialGroupDTO;
import feign.Headers;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * 商城管理相关feign
 *
 * @author wbj
 * @version 1.0
 * @Description
 * @create 2018-01-30
 **/
@FeignClient(name = "bbp-manage-service")
public interface MallFeignService {
    /******************Banner 管理相关接口 Start*************************/
    /** 获取banner组数据*/
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/bannerGroup/list", method = RequestMethod.POST)
    Response getAppBannerGroupList(@RequestBody MallAppBannerGroupDTO dto);

    /**
     * 获取Banner组数据
     * @param dto 查询参数
     * @return 查询结果
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/bannerGroup/info", method = RequestMethod.POST)
    Response getAppBannerGroupInfo(@RequestBody MallAppBannerGroupDTO dto);

    /**
     * 新增或编辑Banner组数据
     * @param dto 待保存的banner组数据
     * @return 保存结果
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/bannerGroup/saveOrUpdate", method = RequestMethod.POST)
    Response saveOrUpdateBannerGroup(@RequestBody MallAppBannerGroupDTO dto);

    /**
     * 删除Banner组数据
     * @param dto 待删除的banner数据
     * @return 删除结果
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/bannerGroup/delete", method = RequestMethod.POST)
    Response deleteBannerGroup(@RequestBody MallAppBannerGroupDTO dto);
    /******************Banner 管理相关接口 End*************************/
    
    
    /******************Special专场管理相关接口 Start*************************/
    /** 获取专场组数据*/
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/specialGroup/list", method = RequestMethod.POST)
    Response getAppSpecialGroupList(@RequestBody MallAppSpecialGroupDTO dto);

    /**
     * 获取专场组数据
     * @param dto 查询参数
     * @return 查询结果
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/specialGroup/info", method = RequestMethod.POST)
    Response getAppSpecialGroupInfo(@RequestBody MallAppSpecialGroupDTO dto);

    /**
     * 新增或编辑专场组数据
     * @param dto 待保存的专场组数据
     * @return 保存结果
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/specialGroup/saveOrUpdate", method = RequestMethod.POST)
    Response saveOrUpdateSpecialGroup(@RequestBody MallAppSpecialGroupDTO dto);

    /**
     * 删除专场组数据
     * @param dto 待删除的专场数据
     * @return 删除结果
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/specialGroup/delete", method = RequestMethod.POST)
    Response deleteSpecialGroup(@RequestBody MallAppSpecialGroupDTO dto);
    /******************Banner 管理相关接口 End*************************/

    
    
    /******************Recomment推送管理相关接口 Start*************************/
    /** 获取推送组数据*/
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/recommentGroup/list", method = RequestMethod.POST)
    Response getAppRecommentGroupList(@RequestBody MallAppRecommentGroupDTO dto);

    /**
     * 获取推送组数据
     * @param dto 查询参数
     * @return 查询结果
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/recommentGroup/info", method = RequestMethod.POST)
    Response getAppRecommentGroupInfo(@RequestBody MallAppRecommentGroupDTO dto);

    /**
     * 新增或编辑推送组数据
     * @param dto 待保存的推送组数据
     * @return 保存结果
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/recommentGroup/saveOrUpdate", method = RequestMethod.POST)
    Response saveOrUpdateRecommentGroup(@RequestBody MallAppRecommentGroupDTO dto);

    /**
     * 删除推送组数据
     * @param dto 待删除的推送数据
     * @return 删除结果
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/recommentGroup/delete", method = RequestMethod.POST)
    Response deleteRecommentGroup(@RequestBody MallAppRecommentGroupDTO dto);
    /******************Banner 管理相关接口 End*************************/

    /******************栏目管理相关接口 Start*************************/
    /** 获取栏目数据*/
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/column/list", method = RequestMethod.POST)
    Response getAppCloumnList(@RequestBody MallAppColumnDTO dto);

    /**
     * 获取栏目数据
     * @param dto 查询参数
     * @return 查询结果
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/column/info", method = RequestMethod.POST)
    Response getAppCloumnInfo(@RequestBody MallAppColumnDTO dto);

    /**
     * 新增或编辑栏目数据
     * @param dto 待保存的栏目数据
     * @return 保存结果
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/column/saveOrUpdate", method = RequestMethod.POST)
    Response saveOrUpdateAppCloumn(@RequestBody MallAppColumnDTO dto);

    /**
     * 删除栏目数据
     * @param dto 待删除的栏目数据
     * @return 删除结果
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/column/delete", method = RequestMethod.POST)
    Response deleteAppCloumn(@RequestBody MallAppColumnDTO dto);

    /**
     * 根据栏目类型获取组分页数据
     * @param dto  queryType   banner:banner,special:专场，recomment，推荐
     * @return 查询结果
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/mall/column/detailList", method = RequestMethod.POST)
    Response detailList(@RequestBody MallAppColumnDTO dto);
    /******************栏目 管理相关接口 End*************************/
}
